home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO026.dsk / GRAPHER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  6KB  |  83 lines

  1. 100  REM    ***************************************
  2. 110  REM    *                                     *
  3. 120  REM    * Stock Portfolio Tracking Program V2 *
  4. 130  REM    *      Data Graph Generation          *
  5. 140  REM    *            module                   *
  6. 150  REM    *  Copyright 1986 by Eric P. King     *
  7. 160  REM   *           GRAPHER  V2.02            *
  8. 170  REM    *                                     *
  9. 180  REM    ***************************************
  10. 190  REM 
  11. 200  HOME : CLEAR : CALL  PEEK(175) +256 * PEEK(176) -46
  12. 210  PRINT  CHR$(4)"PREFIX": INPUT P1$: PRINT  CHR$(4)"PREFIX"P1$"DHR": PRINT  CHR$(4)"PREFIX"P1$
  13. 220  PRINT : PRINT  CHR$(4);"BRUN DHR/RELOCATE.TB"
  14. 230  & "CHART",GGO: & "CHART",FCL: & "CHART",TMD
  15. 240  ONERR  GOTO 840
  16. 250 D$ =  CHR$(4): PRINT D$"OPEN CONFIG": PRINT D$"READ CONFIG": INPUT P2$: PRINT D$"CLOSE"
  17. 260  PRINT D$"PREFIX": INPUT P1$: PRINT D$"PREFIX"P2$
  18. 270  REM    <<----------- MAIN MENU ------------>>
  19. 280  TEXT : HOME :N$ = "<< GRAPHIC OPTIONS >>": GOSUB 820
  20. 290 A$ = "": & "POS",30,6;"1) Chart a Stock": & "POS",30,7;"RETURN to Exit": & "POS",30,9: & "IU","#=1";"#";A$: IF A$ = "1" GOTO 320
  21. 300 FL = 3: HOME : PRINT D$"PREFIX"P1$: PRINT D$"- PRODOS"
  22. 310  REM    <<-------- GET NAME & CHART STOCK --------->>
  23. 320  HOME :A$ = "": & "POS",1,6: & "CENTER","Enter the name of the stock to chart": & "CENTER","(RETURN to exit to Main Menu)": & "POS",35,12
  24. 330  PRINT "Name: ";: & "IU","#=0..9,A..Z,.;@=A..Z";"@#######";A$: IF A$ = "" GOTO 280
  25. 340 FL = 1: PRINT D$" VERIFY PRICES/"A$: HOME : & "POS",30,6;"1) Chart from DAILY price file": & "POS",30,7;"2) Chart from WEEKLY price file"
  26. 350  & "POS",38,9: & "IU","#=1..2";"#";B$: IF B$ = "" GOTO 350
  27. 360  IF B$ = "1"  THEN  PRINT D$"OPEN PRICES/"A$: PRINT D$"READ PRICES/"A$",R0": INPUT RT
  28. 370  IF B$ = "2"  THEN A$ = A$ +".W":FL = 2: PRINT D$"VERIFY PRICES/"A$: PRINT D$"OPEN PRICES/"A$: PRINT D$"READ PRICES/"A$",R0": INPUT RT
  29. 380 A = RT -1: IF RT >220  THEN A = 219
  30. 390 D = 0: IF A >169  THEN D = A -169
  31. 400 IC =  INT(510/((A -D) +1))
  32. 410  DIM HP(A),LP(A),CP(A),VO(A):B = 1: IF RT >220  THEN B = (RT -220) +1
  33. 420 LP = 2000: FOR I = B TO RT: PRINT D$"READ PRICES/"A$",R"I
  34. 430  FOR J = 0 TO 3: INPUT T$(J): NEXT :HP(I -B) =  VAL(T$(0)):LP(I -B) =  VAL(T$(1)):CP(I -B) =  VAL(T$(2)):VO(I -B) =  VAL(T$(3)): IF HP(I -B) >HP  THEN HP = HP(I -B)
  35. 440  IF LP(I -B) <LP  AND LP(I -B) >0  THEN LP = LP(I -B)
  36. 450  IF VO(I -B) >VO  THEN VO = VO(I -B)
  37. 460  NEXT : PRINT D$"READ PRICES/"A$",R"B: FOR I = 0 TO 6: INPUT T$(I): NEXT :SD$ = T$(4) +"/" +T$(5) +"/" +T$(6)
  38. 470  PRINT D$"READ PRICES/"A$",R"RT: FOR I = 0 TO 6: INPUT T$(I): NEXT :ED$ = T$(4) +"/" +T$(5) +"/" +T$(6): PRINT D$"CLOSE"
  39. 480 HP = ( INT(HP +5)/5) *5:VO = VO +100: IF LP <7  THEN LP = 0
  40. 490  IF LP < >0  THEN LP = ( INT(LP -2)/5) *5
  41. 500  & "CHART",GMD: & "CHART",CLP(39,559,9,30): & "CHART",SCL(0,510,0,VO):C = 1 -IC: FOR I = D TO A:C = C +IC: FOR J = 0 TO 1
  42. 510  & "CHART",MOV(C +J,0): & "CHART",DRW(C +J,VO(I)): NEXT : NEXT 
  43. 520  & "CHART",CLP(39,559,0,8): & "CHART",SCL(0,100,0,100): & "CHART",HLB(SD$,0,0,3): & "CHART",HLB(ED$,100,0,9): & "CHART",HLB(A$,50,0,6)
  44. 530  & "CHART",CLP(0,35,34,191): & "CHART",SCL(0,50,LP,HP): & "CHART",HLB( STR$(HP),50,HP,7): & "CHART",HLB( STR$(LP),50,LP,9):Y =  INT(((HP -LP)/6) +.5)
  45. 540  FOR I = 1 TO 6: & "CHART",HLB( STR$((Y *I) +LP),50,(Y *I) +LP,7): NEXT 
  46. 550  & "CHART",CLP(39,559,34,191): & "CHART",SCL(0,510,LP,HP): & "CHART",AXS(50,Y,0,LP): & "CHART",GID(50,Y,0,LP)
  47. 560 C = 1 -IC: FOR I = D TO A:C = C +IC: & "CHART",MOV(C,LP(I)): & "CHART",DRW(C,HP(I)): & "CHART",MOV(C,CP(I)): & "CHART",DRW(C +IC,CP(I))
  48. 570  NEXT : CALL  -198: CALL  -756: & "CHART",TMD
  49. 580  REM   <<-------- AFTER CHARTING OPTIONS -------->>
  50. 590 N$ = "<< OPTIONS >>": GOSUB 820:A$ = "": & "POS",30,6;"1) Chart another Stock": & "POS",30,7;"2) Add an Average to current chart"
  51. 600  & "POS",30,8;"3) Print the chart": & "POS",30,9;"4) View the chart again": & "POS",30,10;"5) Exit Chart program"
  52. 610  & "POS",30,12: & "IU","#=1..5";"#";A$: IF A$ = "" GOTO 610
  53. 620 E =  VAL(A$): ON E GOTO 900,650,790,630,300
  54. 630  & "CHART",GMD: CALL  -756: & "CHART",TMD: GOTO 590
  55. 640  REM   <<------- ADD AVERAGE LINES TO CHART --------->>
  56. 650 N$ = "<< ADD AVERAGE LINES TO CHART >>": GOSUB 820: & "CENTER","The limits are a low of 9 or high of 50 for averages."
  57. 660  & "CENTER","Common sense must also be used consistent with the amount of"
  58. 670  & "CENTER","data available for graphing.": & "POS",1,10: & "CENTER","Please enter the factor to use."
  59. 680 A$ = "": & "POS",30,12: & "IU","#=0..9";"##";A$: IF A$ = "" GOTO 650
  60. 690 AV =  VAL(A$): IF AV <9  OR AV >50 GOTO 680
  61. 700  IF (AV -1 >A)  THEN  HOME : CALL  -198: & "POS",1,12: & "CENTER","INSUFFICIENT DATA": FOR I = 1 TO 1000: NEXT : GOTO 650
  62. 710  & "CHART",GMD:I3 = 0:C = 1: FOR I = D TO A:I2 = 0:I4 = 0: IF I <(AV -1)  THEN C = C +IC: GOTO 770
  63. 720  FOR J = I TO I -(AV -1)  STEP  -1: IF CP(J) = 0 GOTO 740
  64. 730 I2 = I2 +CP(J):I4 = I4 +1
  65. 740  NEXT :I2 = I2/I4
  66. 750  IF I3 = 0  THEN  & "CHART",PLT(C,I2):I3 = 1:C = C +IC: GOTO 770
  67. 760  & "CHART",DRW(C,I2):C = C +IC
  68. 770  NEXT : CALL  -198: CALL  -756: & "CHART",TMD: GOTO 590
  69. 780  REM    <<---------- PRINT CHART ------------>>
  70. 790  & "WINDOW": HOME : & "POS",1,12: & "CENTER","TURN ON THE PRINTER": & "CENTER","AND PRESS <RETURN>": CALL  -756
  71. 800  & "IWD",1,10: GOTO 590
  72. 810  REM   -- SECTION TITLE SUB --
  73. 820  & "WINDOW": HOME : VTAB 2: & "CENTER",N$: & "WINDOW",4: HOME : RETURN 
  74. 830  REM   <<--------- ERROR ROUTINES --------->>
  75. 840  & "ERR",EC,EL: POKE 216,0: PRINT D$"CLOSE": ONERR  GOTO 840
  76. 850  IF EC = 6 GOTO 870
  77. 860  & "WINDOW": PRINT D$"CLOSE": CALL  -211: PRINT "ERROR # "EC".. IN LINE "EL: PRINT "FILES ARE CLOSED": END 
  78. 870  ON FL GOTO 880,890,910
  79. 880  HOME : CALL  -211: & "POS",1,10;"I cannot find a price file for "A$: PRINT "Press any key to continue": CALL  -756:FL = 0: GOTO 320
  80. 890  HOME : CALL  -211: & "POS",1,10;"I cannot find a WEEKLY price file for "A$: PRINT "Press any key to continue": CALL  -756:FL = 0: GOTO 320
  81. 900  HOME : PRINT D$"PREFIX"P1$: GOTO 200
  82. 910  HOME : CALL  -211: & "POS",1,10: & "CENTER","** PRODOS is not in the Systems' subdirectory **": PRINT : PRINT 
  83. 920  & "CENTER","because internal pointers have been changed, you must set the": & "CENTER","PREFIX and type -PRODOS": CALL  -198: END